soc: apple: {sep,aop}: log the endpoints and services the firmware offers - #593
Closed
brentkearney wants to merge 1 commit into
Closed
soc: apple: {sep,aop}: log the endpoints and services the firmware offers#593brentkearney wants to merge 1 commit into
brentkearney wants to merge 1 commit into
Conversation
brentkearney
force-pushed
the
sep-aop-log
branch
from
September 2, 2026 23:55
6d892dc to
f910ad0
Compare
Author
|
Runtime results from the patched kernel on the Addition: the first boot showed that SEPOS sends a second discovery message (type 1) per endpoint, which the re-enabled Runtime: No |
…fers
Both drivers discard the coprocessor's own description of what it offers,
which makes the hardware harder to work with than it needs to be.
sep.rs receives two messages per SEPOS endpoint on the discovery endpoint
and drops both. Type 0 carries the endpoint's four-character name and
number; the dev_info! that would print it in process_discover_msg() is
commented out, along with the two constants it needs. Type 1 is what
AppleSEPManager calls the "OOL advertisement": the endpoint's out-of-line
buffer size bounds, in pages, packed into the data word. The driver has no
constant for it, so it would fall through to the (also commented out)
"Unknown discovery message type" warning. Nothing else in the driver
exposes any of this, so the set of endpoints SEPOS actually starts has
never been visible from Linux on any board.
aop.rs matches announced EPIC service names against "aop-audio", "las" and
"als" and returns silently for anything else, so services with no driver
leave no trace either.
Enable the SEP log, name and log the OOL advertisement so that the unknown
type warning only fires for genuinely unknown messages, and add the AOP
log. All of it fires once per boot during probe, alongside the RTKit syslog
output these coprocessors already emit at the same level.
dev_dbg! would be the tidier choice but is not usable here: Rust's
dev_dbg! routes to Device::pr_dbg(), which is gated on
cfg!(debug_assertions), so it compiles to nothing unless
CONFIG_RUST_DEBUG_ASSERTIONS is set and it does not participate in dynamic
debug.
On an Apple MacBook Pro (16-inch, 2021), t6000/j316s, the SEP log yields:
Got endpoint Ok("hibe") at 20
Endpoint 20 OOL buffer sizes 0x01010101
Got endpoint Ok("stac") at 24
Endpoint 24 OOL buffer sizes 0x02020202
Got endpoint Ok("cntl") at 0
Endpoint 0 OOL buffer sizes 0x00000000
Got endpoint Ok("xarm") at 19
Endpoint 19 OOL buffer sizes 0x02020202
Got endpoint Ok("xars") at 16
Endpoint 16 OOL buffer sizes 0x02020202
Got endpoint Ok("pnon") at 21
Endpoint 21 OOL buffer sizes 0x02020404
Got endpoint Ok("hdcp") at 14
Endpoint 14 OOL buffer sizes 0x01010101
and the AOP log, for a board whose AOP node only binds aop-audio and als:
No driver for service Ok("wakehint") on endpoint 37
No driver for service Ok("accel") on endpoint 33
No driver for service Ok("gyro") on endpoint 34
No driver for service Ok("als-temp") on endpoint 43
No driver for service Ok("cma") on endpoint 42
No driver for service Ok("devmotion6") on endpoint 41
No driver for service Ok("SPUApp") on endpoint 32
No driver for service Ok("aop-voicetrigger") on endpoint 40
brentkearney
force-pushed
the
sep-aop-log
branch
from
September 3, 2026 02:18
f910ad0 to
d45108a
Compare
Member
|
Not something that we need in shipped kernels |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Log the endpoints SEPOS advertises and the AOP services that no driver claims, once per boot during
probe(), at the same level as the RTKit syslog output these coprocessors already emit. Both drivers discard that description of what the firmware offers.Changes
sep.rs: enable thedev_info!inprocess_discover_msg()that prints each advertised SEPOS endpoint, with its four-character name and endpoint number, and thedev_warn!for unknown discovery message types. Restore the two constants they need,MSG_PARAM_SHIFTandMSG_PARAM_MASK.sep.rs: name discovery message type 1MSG_ADVERTISE_OOLand log it. This is whatAppleSEPManagercalls the OOL advertisement: the endpoint's out-of-line buffer size bounds in pages, packed into the data word. SEPOS sends one per endpoint right after the type 0 message, so without this the newly enabled warning fires seven times per boot.aop.rs: inregister_service(), log the name and endpoint of any announced EPIC service other thanaop-audio,las, oralsbefore returning.dev_dbg!is not an option here. Rust'sdev_dbg!routes toDevice::pr_dbg(), which is gated oncfg!(debug_assertions)and does not participate in dynamic debug, so it compiles to nothing unlessCONFIG_RUST_DEBUG_ASSERTIONSis set.Why this matters
The set of endpoints SEPOS starts has never been visible from Linux on any board, and AOP services with no driver leave no trace. Both lists are the first thing anyone working on these coprocessors needs.
Output
On a MacBook Pro 16-inch 2021 (
apple,j316s/apple,t6000), whose AOP node binds onlyaop-audioandals, the patched kernel prints during probe:Testing
Compile-tested against
asahi-7.1.6-1with rustc 1.93.1, and runtime-tested on thej316sabove with thesepnode enabled:drivers/soc/apple/sep.oandaop.obuild before and after,CLIPPY=1introduces no new warnings, andrustfmt --checkpasses.apple_sepandapple_aopoutput of one boot.Unknown discovery message typewarning fires, so types 0 and 1 are the only discovery messages this SEPOS sends.This change is independent of #592 and applies to
asahi-wipin either order.